home *** CD-ROM | disk | FTP | other *** search
- { *****************************************************
- TEventList Object
-
- The TEventList is a TList decendant which can store
- TNotifyEvent objects so you can create run-time and
- write-only event 'hooks' in your components.
-
- Paul Warren
- HomeGrown Software Development
- (c) 1997 Langley British Columbia.
- (604) 856-6523
- e-mail: hg_soft@uniserve.com
- Home page: http://users.uniserve.com/~hg_soft
- ***************************************************** }
-
- unit Elist;
-
- interface
-
- uses Classes;
-
- type
- { object wrapper for TNotifyEvent }
- TWrapper = class(TObject)
- AEvent: TNotifyEvent;
- end;
-
- TEventList = class(TList)
- private
- { private declarations }
- function GetEvent(Index: Integer): TNotifyEvent;
- public
- { public declarations }
- destructor Destroy; override;
- function AddEvent(Event: TNotifyEvent): integer;
- property Events[Index: Integer]: TNotifyEvent read GetEvent;
- end;
-
- implementation
-
- { TEventList }
- destructor TEventList.Destroy;
- var
- Temp: TObject;
- begin
- if Count-1 >= 0 then
- repeat
- { make Temp := first Item }
- Temp := Items[0];
- { free it }
- Temp.Free;
- { delete it }
- Delete(0);
- until Count = 0;
- { call inherited }
- inherited Destroy;
- end;
-
- function TEventList.GetEvent(Index: Integer): TNotifyEvent;
- var
- P: TWrapper;
- begin
- { set var P := desired Item }
- P := Items[Index];
- { return the TNotifyEvent }
- Result := P.AEvent;
- end;
-
- function TEventList.AddEvent(Event: TNotifyEvent): integer;
- var
- P: TWrapper;
- begin
- { create a new wrapper }
- P := TWrapper.Create;
- { set its AEvent field := TNotifyEvent }
- P.AEvent := Event;
- { add to list and return its position }
- Result := Add(P);
- end;
-
- end.
-